Total Hours: 3
This week comprised of the initial team meeting. We worked on the homework for the first week, and assigned team roles. I was chosen to be the software lead. Additionally, we decided to sync our schedules together and decide on a weekly team meeting time. We agreed to use solenoids for the purpose of holding down the guitar strings and and ordered a variety of solenoids to test.
Total Hours: 6
This week our group worked on testing a variety of solenoids that we ordered. We were trying to test which solenoid which would enough force to hold down a guitar string while at the same time be thin enough to be stacked side by side in groups of 6 to press down on any of the 6 strings on a fret of a guitar. We found that only the big solenoids which required 24V of power exerted sufficient force to work properly. However, unfortunately they were too bulky and thick to suit our purpose. Alan and Kareem are working on the issue as of now.
Individually, I have started to work on a prototype for the app that will direct the guitar playing system. The idea is to read a midi file in a phone and then convert it into a format that our system is compatible to respond to. The converted file will then be transferred to the microprocessor connected to the guitar playing mechanism which in turn will play the guitar. There are three distinct parts to the software side. An app to read the midi file and convert it into a format that can be understood by the microprocessor. One issue which needs to be resolved is whether the app will initiate the conversion of midi or would it be the processor's job. In view of this I have decided to build a prototype using an Arduino and a bluetooth module and use 48 LEDs in place of solenoids and try to replicate the whole system with the pushing down of a solenoid is instead faked using the lighting up of an LED. Once this system works, we will just have to redirect the output from the LEDs to the solenoids.
Also, keeping in mind that 3D printing will be required to put together various aspects of the mechanical system, I have started learning OpenSCAD to understand 3D modelling and further use of STL files in 3D printing.
Week 3 Total Hours: 8
I tested a bluetooth module with my arduino to test data transfer possibilities. I was successfully able to use an android app and transfer a sequence of of light on and off instruction to an onboard arduino LED. I also built a first prototype of the the LED grid i will use to test the software side of the project without interfacing with the solenoids. As of now I have a 3 by 3 grid and i am trying to create a MIDI file which can be “played” on the grid.
Sid Parida
Week 4 total hours: 8
This week I worked on a python script that converted a MIDI file into musical notes. From there, I was able to convert the notes to correspond to a specific fret and string, meaning if I had a 6x18 grid of LED’s, and I wanted to play the low E 3rd fret, it would light the third led in the first row. I also worked on interfacing the bluetooth module with a basic app for the “show me a thing” part of our manlab. In this app, you could press either “y” for yellow, “r” for red, or “g” for green and whichever letter you pressed, it would send a signal to the bluetooth which would send the appropriate signal to the arduino and light up the corresponding led. We also as a group decided to use the STM32 f4 microcontroller.
Week 5
Total Hours: 7
This week i started using the STM32 F4 microcontroller. First I replicated my progress on the Arduino in the STM 32. I made the bluetooth module work with the STM 32. Then I uploaded my code for turning MIDI data into note data onto the STM 32. For the next ManLab. Then I tried to work with timing issues and could successfully slow or speed up the playback track. For the next man lab, I will be playing a preloaded MIDI file using an array of LEDs using the STM 32. I also worked on pitching the song up or down. On the other hand I helped set up a servo to successfully work using a control signal. I believe now we will be using servos now to control the up and down motion of the fret pressing apparatus. I was also able to control a servo with the STM 32.
This week I worked on porting the MIDI decoding code from a java interface to C. Initially I had assumed that the MIDI file will be decoded by the Android app and note playing data will be transferred via bluetooth to the microcontroller. However, it is significantly easier if the MIDI file is decoded in the microcontroller itself. Hence I had to change rewrite the program in C and was able to successfully decode a prestored MIDI file in the microcontroller memory. I am now working on generating timing interrupts based on the note data, and next week should be able to demo the microcontroller "playing" a MIDI song on an LED grid. I also worked on figuring out how to maintain the PWM value for the the different servos working to play the guitar, and we decided to use a PWM board similar to the ones used to control multiple joints in a hexapod.
Total Hours: 9
This week I focused on learning how to work with the STM32F4 Microcontroller. First, i went through Experiment 0 and Experiment 1 prepared by Professor George Hadley and setup the Eclipse IDE and STLink Utility Tools. Then I was able to map general purpose IO pins to output to control an LED. From there on I tried making the PWM pins to output a signal to control a Servo. After initial failure I was able to control the exact angle of a Servo using the PWM signal generated by the microcontroller. We will use this servos to control the picks that pluck the guitar strings to generate tone. Second I tried making the bluetooth module using the TX/RX module on the STM32 but could not get it to properly initialize. However, I was able to use a small micro sd card with the STM 32 and we will use the song stored on the SD card for demo purposes during the Midterm Review.
Total Hours: 6
This week i worked on setting up the plucking mechanism> I prototyped the system using an arduino and a PWM driver IC. First i setup the bluetooth with the arduino so that when i sent a number between 0 and 63, based on the 6 least significant bits, the LEDs lit up, with 0 representing on and 1 representing on. Then i connected the six output from the first arduino to a second arduino which would drive the PWM signal generating circuit. Then I wrote the code to generate the appropriate PWM generation signal from the 2nd arduino to control 6 servo motors to alternate between two position sso as to mimic the motion a guitar pick makes when plucking a string. AFter initial testing we burnt the IC on the pwm generator twice and could not demo it but now I am working on making the same code work with the STM32F4
Total Hours: 5
This week I worked on the java app for the front end of the system. I developed the interface which can be used to load any midi file into memory and then transfer it over to the microprocessor for playback. The java app is up and running but I faced issues in making a file transfer using the app due to permission issues. I will work on fixing them and hopefully have a n app to demo on wednesday. The home and pair screens are up and running the transfer screen needs work as of now.
Total Hours: 10
This week I was responsible for three main things. First, I worked on transferring data to the STM32F4 using bluetooth. I was able to configure the board to receive a file and load it into memory by transferring a byte at a time. Now it can handle arbitrary files only limited by the amount of memory available on the processor. I was then able to use this data to trigger LEDs to ensure that the timing and note information had been properly transferred. Second, I was successfully able to program our stamp module PCB using the ST Link. It uses the ST Link and three pins: PA13, PA14, VCC and GND to let the user program it like the normal Discovery Board. However, the reset pin needs to be held down to enable programming. Third, I worked on the HW assignment involving ethics and environmental concerns. I made a detailed list of all possible ramifications that arise by using our product and suggested possible measures against the possible damage.
Total Hours: 10
This week I was responsible for two things. First, I worked on completing the app to make sure that the file transfer is accurate and the entire file is properly transferred to the STM32F4. The final app ended up looking a lot different than the original design. And a photo of the same is attached at the end. Secondly i helped Mark to program the Stamp module. After multiple tries, and still failing, we asked Joe to help us out by testing it with both St Link and DFuse. We managed to get a program onto the stamp module but it doesn't work as expected as of now.
Week 14
Total Hours: 12
This week I was responsible completed three things. First I integrated the app to control the STM32 F4 and cue play or stop signals. Second, i uploaded the MIDI file unto the stm32s memory and decoded it successfully to get note and timing information. Thirdly, I used the and timing data to generate electric signals which could play a show on an LED grid. Finally these signals were used to play a D chord string by string on the actual machine using the solenoids and picks. Photos follow. And a video
Total Hours: 12
This week was mostly spent on integrating the software system with the hardware. We tried to use the electrical signals to actually trigger the solenoids and were able to happy birthday. We did find an issue while plucking the high E string and changing the ordering of the frets changed that. I then added the capability to play multiple songs using a song choice option and also the capability to play notes of different length. I also created a non bluetooth version of the software for testing
Total Hours: 12
This week was mostly spent on building the final system of the project. We completed and integrated the timing part of the software and then built new songs to test the system with. We used here comes the sun and the system worked. We then practised our presentation for the Spark Challenge and succeeded in securing the first prize. Other than that we have been working on the final folder since then.